package com.example.juyixia;

import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
/**
 * �������  ʵ�ּ�ͷ���ֻ������ƶ�
 * @author SJ
 *
 */
public class MyOrientationListener implements SensorEventListener {
	private SensorManager mSensorManager;//����������Ա���
	private Context mContext;//������
	private Sensor mSensor;//������
	private float mX;//���µ�x����
	//���췽�� ͨ����������ϵ
	public MyOrientationListener(Context context){
		this.mContext = context;
	}
	/**
	 * �����ṩ�Ŀ�ʼ��������
	 */
	@SuppressWarnings("deprecation")
	public void start(){
		//��ʼ��������
		
		//�õ�ϵͳ����Ĺ���Ա���
		mSensorManager = 
			(SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);
		//ͨ������Ա��ݵõ����򴫸���
		if(mSensorManager!=null){//�õ�����Ա��ݲ��ܻ�÷��򴫸���
			mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
		}
		if(mSensor!=null){//�ж�����ƶ������Ƿ�֧�ַ��򴫸У���Щ�ֻ���֧��
			mSensorManager.registerListener
			(this, mSensor,SensorManager.SENSOR_DELAY_UI);
		}
	}
	/**
	 * �����ṩ�Ľ�����������
	 */
	public void stop(){
		mSensorManager.unregisterListener(this);
	}
	@Override
	/**
	 * ���ȷ����仯ʱִ�еķ��������ﲻ��Ҫʵ��
	 */
	public void onAccuracyChanged(Sensor arg0, int arg1) {
		// TODO Auto-generated method stub

	}
	/**
	 * ����仯ʱִ�еķ���
	 */
	@SuppressWarnings({ "deprecation"})
	@Override
	public void onSensorChanged(SensorEvent event) {
		// TODO Auto-generated method stub
		//�����ص������Ƿ��򴫸����Ž���ҵ���߼�
		if(event.sensor.getType()==Sensor.TYPE_ORIENTATION){
			//�õ���������x����
			float x = event.values[SensorManager.DATA_X];
			//���x����ı䳬��1�� ��ͨ�������ص�֪ͨ��ͼ������и���
			if(Math.abs(x-mX)>1.0){
				//����ͼ����ע���˷����������Ž��е��߼�
				if(mOnOrientationListener!=null){
					mOnOrientationListener.OnOrientationChanged(x);
				}
				mX = x;
			}
		}
	}
	private OnOrientationListener mOnOrientationListener;
	//�ṩset����
	public void setOnOrientationListener(OnOrientationListener mOnOrientationListener) {
		this.mOnOrientationListener = mOnOrientationListener;
	}

	/**
	 * ���嵱����ı�ʱ�Ľӿ�
	 */
	public interface OnOrientationListener{
		//������ı�ʱ�ķ���
		void OnOrientationChanged(float x);
	}
}
